#打开
#相对路径，相对于哪一个目录下面的指定文件
# f=open("text.txt","r")#"r"文件不存在会报错  只能读不能写  文件指针只会放在文件开头
# # f=open("text.txt","w")#"w"文件不存在会生成  只能写不能读 文件指针只会放在文件开头
# # f=open("text.txt","a")#"a"文件不存在会生成  只能写不能读 文件指针只会放在文件结尾
# #
# #
# # #读写
# # # content=f.read()
# # # print(content)
# #
# # f.write("abcdefg")
#
# #关闭
# f.close()

#打开图片文件1.jpg
#1.1 打开文件
# f=open("1.jpg","rb")
# #1.2 读取文件
# content=f.read()
# # print(content)
# #1.3 关闭文件
# f.close()
#
# #打开另外文件2.jpg，然后，取出半部分内容，写入到2.jpg文件里面
# toFile=open("2.jpg","wb")
#
# w_content=content[0:len(content)//2]
# toFile.write(w_content)
#
# toFile.close()

# f=open("text.txt","r+")#"r+"文件不存在会报错  能读,能写  文件指针只会放在文件开头,1.先写后读，文件指针在开头，如果原本有内容会覆盖内容，
# # 2.先读后写，文件指针会在最后，再把写的内容写入
# f=open("text.txt","w+")#"w+"文件不存在会生成  能写，能读  读的时候会把文件原本的内容删去，写入的时候会把文件内原本的内容删去在写入，文件指针只会放在文件开头
# f=open("text.txt","a+")#"a+"文件不存在会生成  能读 不能打印但不会删除内容  能写文件指针在文件最后
# f=open("text.txt","rb+")#"rb+"文件不存在不会生成  能读 打印的是二进制  能写文件指针在文件最后
#
# #
# #
# # #读写
# content=f.read()
# print(content)
#
# # f.write(bin(1011))
# # f.write("12")
#
# # content=f.read()
# # print(content)
#
# f.close()

#定位
# f=open("text.txt","r")
#
# print(f.read())
#
# f.close()

# f=open("text.txt","rb")
#
# print(f.tell())
# f.seek(-2,2)
# #文本文件的操作模式下（不带b）  只能写0
# #如果想要写1/2，必须在二进制文件操作模式下（带b）
#
# print(f.tell())
#
# print(f.read())
# print(f.tell())
#
# f.close()


# f=open("text.txt","r")

# f.seek(2)
# content=f.read(2)
# print(f.tell())
# print(content)

# print("-----",f.tell())
# content=f.readline()
# print(content,end="")
#
# print("-----",f.tell())
# content1=f.readline()
# print(content1,end="")
#
# print("-----",f.tell())
# content1=f.readline()
# print(content1,end="")
#
# print("-----",f.tell())


# content=f.readlines()
#readlines() 会自动的将文件换行符进行处理
#将处理好的每一行组成一个列表返回

# print(content)
# f.close()


# from collections import Iterable
# f=open("text.txt","r")
#
# # print(isinstance(f,Iterable))
#
# # for i in f:
# #     print(i,end="")
# if f.readable():
#     content=f.readlines()
#     for i in content:
#         print(i,end="")
#
# f.close()

#一般文件特别大的时候，可以使用readline方法
    #按行加载，可节省内存
    #但相比于其他两个读取方法，性能较低
#其他两个方法，一次性读取文件所有内容
    #虽然占用内存
    #但处理性能比较高


# f=open("text.txt","r")
#
# if f.writable():
#     print(f.write("abc"))
#
# f.close()

# f=open("text.txt","w")
# f.write("abc")
#
# f.flush()#立马把缓冲区的内容写入文件
#
# f.close()

import os
# os.rename("text.txt","text1.txt")
# os.rename("first","one")

# os.rename("one/one.txt","two/two.txt")
# os.renames("one/one.txt","two/two.txt")

# os.remove("2.jpg")

#目录下有东西不能直接删除
# os.rmdir("two")
# os.rmdir("two/one")

# os.removedirs("two/two.txt")

# os.mkdir("a")#不能创建多级目录
# os.mkdir("a/b")

# os.mkdir("c",0o777)

# os.chdir("a")

# f=open("text.txt","w")
# print(os.getcwd())

# print(os.listdir("../"))

# f.close()



# import os
# source_f=open("text.txt","r",encoding="utf-8")
# dst_file=open("a.txt","a",encoding="utf-8")
#
# while True:
#     content=source_f.read(1024)
#     if len(content)==0:
#         break
#     print("----",content)
#     dst_file.write(content)
#
#
#
# source_f.close()
# dst_file.close()

# #0.获取所有文件名称列表
# import os
# import shutil
#
# path="files"
# if not os.path.exists(path):
#     exit()
# os.chdir("path")
# file_list=os.listdir("./")
# # print(file_list)
#
# #1.遍历所有文件(名称)
# for file_name in file_list:
#     # print(file_name)
#     #2.分解文件的后缀名
#         #获取最后一个的索引位置
#     index=file_name.rfind(".")
#     if index ==-1:
#         continue
#     # print(index)
#         #根据这个索引位置，当做起始位置，来截取后续的所有字符串内容
#     extension=file_name[index+1:]
#     # print(extension)
#     #3.查看一下，是否存在同名的目录
#
#     #4.如果不存在这样的目录  直接创建一个这样的目录
#     if not os.path.exists(extension):
#         #创建
#         os.mkdir(extension)
#     #移动
#     shutil.move(file_name,extension)
#     #5.目录存在 移动过去
#
#     #创建 移动 移动
#
# #2.

import os

# os.chdir("files")
# file_list=os.listdir("files")
#print(file_list)

#通过给定的文件夹，列举出这个文件夹当中，所有的文件，以及文件夹，子文件夹当中的所有文件
def listFilesTotxt(dir,file):
    #1.列举出，当前文件夹，下所有的子文件夹，以及子文件
    file_list=os.listdir(dir)
    # print(file_list)


    #2.针对于，列举的列表，进行遍历
    for file_name in file_list:
        new_file_name=dir+"/"+file_name
        if os.path.isdir(new_file_name):
            # print(new_file_name)
            file.write(new_file_name+"\n")
            listFilesTotxt(new_file_name,file)
        # 判定，是否是目录，listFiles
        else:
            #打印下，文件名称
            # print("\t"+file_name)
            file.write("\t"+file_name+"\n")
    # print("")
    file.write("\n")

f=open("list.txt","a")
listFilesTotxt("files",f)
